package club.terroir.client.produit;

import club.terroir.client.Club_terroir;
import club.terroir.client.ControlerClubAdmin;
import club.terroir.client.producteur.ProduitListGUI;

import com.google.gwt.core.client.Callback;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Tree;
import com.google.gwt.user.client.ui.TreeItem;

public class FolderFactory {

	
	static public FolderFactory instance = new FolderFactory();
	Folder root = new Folder("Produits",null);
	Tree tree = new Tree();
	
	private FolderFactory() {		
	}
	
	public void enregistrerFolder(final Folder folder) {
		Club_terroir.greetingService.updateFolder(folder, new AsyncCallback<Folder>() {

			@Override
			public void onFailure(Throwable caught) {
				// TODO Auto-generated method stub
				ControlerClubAdmin.instance.log("Exception Lors enregistement folder");
			}

			@Override
			public void onSuccess(Folder result) {
				// Le folder modifié pouvait ne pas avoir d'id . Les autres valeurs sont inchangées
				folder.id = result.id;
				// Les childreen peuvent avoir été des id maintenat
				folder.childreen=result.childreen;
			}
		});
	}
	
	public void initRoot() {
		  Club_terroir.greetingService.getFolderRoot(new AsyncCallback<Folder>() {
			
			@Override
			public void onSuccess(Folder result) {
				root =result;
				ProduitListGUI.instance.updateUI();
				FolderFactory.this.getTreeProduitSelec();
			}
			
			@Override
			public void onFailure(Throwable e) {
				e.printStackTrace();
			}
		});
		
	}
	
	public Folder getRoot() {
		return root;
	}
	
	
	public void enregistrerProduit(Produit produit) {
		
	}
	

	public Tree getTreeProduitSelec() {			
			Folder root = getRoot();
			tree.clear();
			TreeItem itemRoot = root.createTreeItemSelection();
			itemRoot.setState(true);
			tree.addItem(itemRoot);
			return tree;
	}

	
	
}
